import { message } from 'antd';

import api from '../../api';

export default {
  namespace: 'organProductAnalysisM',
  state: {
    // 产品数量合规模走势
    columns: [
      {
        title: '排名',
        dataIndex: 'ranking',
        key: 'ranking',
        width: 50,
        render: (text, record, index) => `${index + 1}`,
      },
      {
        title: '租户',
        dataIndex: 'tenantName',
        key: 'tenantName',
        width: 100,
        render: (_) => _ || '--',
      },
      {
        title: '产品数量',
        dataIndex: 'productNum',
        key: 'productNum',
        width: 80,
        render: (_) => _ || '--',
      },
      {
        title: '产品规模(亿元)',
        dataIndex: 'productScale',
        key: 'productScale',
        width: 100,
        render: (_) => _ || '--',
      },
      {
        title: '规模排位',
        dataIndex: 'rank',
        key: 'rank',
        width: 80,
        render: (_) => _ || '--',
      },
    ],
    column1: [
      {
        title: '排名',
        dataIndex: 'ranking',
        key: 'ranking',
        render: (text, record, index) => `${index + 1}`,
        width: 50,
      },
      {
        title: '租户',
        dataIndex: 'tenantName',
        key: 'tenantName',
        width: 100,
      },
      {
        title: '产品规模(亿元)',
        dataIndex: 'productScale',
        key: 'productScale',
        width: 100,
        render: (_) => _ || '--',
      },
      {
        title: '产品数量',
        dataIndex: 'productNum',
        key: 'productNum',
        width: 100,
        render: (_) => _ || '--',
      },
      {
        title: '数量排位',
        dataIndex: 'rank',
        key: 'rank',
        width: 80,
        render: (_) => _ || '--',
      },
    ],
    // 机构总览左侧非浮动列表
    columnsLeft: [
      {
        title: '区域',
        dataIndex: 'province',
        key: 'province',
        align: 'left',
        width: 100,
      },
      {
        title: '累计机构数量',
        dataIndex: 'totalOrgan',
        key: 'totalOrgan',
        align: 'left',
        type: 'number',
        width: 100,
        sorter: (a, b) => a.totalOrgan - b.totalOrgan,
        render: (_) => _ || '--',
      },
      {
        title: '累计产品数量',
        dataIndex: 'totalProduct',
        key: 'totalProduct',
        align: 'left',
        type: 'number',
        width: 100,
        sorter: (a, b) => a.totalProduct - b.totalProduct,
        render: (_) => _ || '--',
      },
      {
        title: '当前规模总量（亿元）',
        dataIndex: 'totalScale',
        key: 'totalScale',
        align: 'left',
        type: 'number',
        width: 100,
        sorter: (a, b) => a.totalScale - b.totalScale,
        toFixed: '2',
        render: (_) => _ || '--',
      },
    ],
    // 机构总览右侧
    columnsRight: [
      {
        title: '机构',
        dataIndex: 'institutionName',
        key: 'institutionName',
        width: 80,
      },
      {
        title: '机构产品规模（亿元）',
        dataIndex: 'productScale',
        key: 'productScale',
        width: 150,
        type: 'number',
        toFixed: '2',
        sorter: (a, b) => a.productScale - b.productScale,
        render: (_) => _ || '--',
      },
      {
        title: '机构产品数量',
        dataIndex: 'productNum',
        key: 'productNum',
        width: 120,
        sorter: (a, b) => a.productNum - b.productNum,
        render: (_) => _ || '--',
      },
    ],
  },
  effects: {
    // 获取产品概览信息
    *getProductViewInfo({ payload, callback }, { call }) {
      try {
        const response = yield call(api.organProductAnalysisApi.getProductViewInfo, payload);
        if (response && response.code == 0) {
          callback(response.data || {});
        } else {
          callback({});
          // callback({
          //   institutionNum: 100, // 累计机构数量
          //   productNum: 500, // 累计产品数
          //   durationProductNum: 50, // 存续期产品
          //   addProductNum: 40, // 本年度，新增产品数
          //   expireProductNum: 10, // 本年度，到期产品数
          //   productTradeModelNum: {
          //     BOOKKEEPING_MODE: 100, // 簿记模式产品数
          //     COMMAND_MODE: 200, // 指令模式产品数
          //     VALUATION_BOOKKEEPING_MODEL: 100, // "估值系统对接模式产品数
          //     VALUATION_TABLE_ANALYSIS_MODE: 50, // "估值表解析模式产品数
          //   },
          // });
          message.error(response?.msg || '获取产品概览信息失败！');
        }
      } catch (e) {
        message.error(`接口错误：${JSON.stringify(e)}`);
      }
    },
    // 获取产品数量和规模走势图的左侧数据
    *getLeftChartsInfo({ payload, callback }, { call }) {
      try {
        const response = yield call(api.organProductAnalysisApi.getProductCharts, payload);
        if (response && response.code == 0) {
          callback(response.data);
        } else {
          callback({
            xAxis: [],
            series: [],
          });
          // callback({
          //   xAxis: [
          //     '2023-03-29',
          //     '2023-03-30',
          //     '2023-03-31',
          //     '2023-04-01',
          //     '2023-04-04',
          //     '2023-04-05',
          //     '2023-04-06',
          //     '2023-04-07',
          //   ],
          //   series: [
          //     {
          //       name: '产品数量',
          //       data: [1500, 1800, 1600, 1900, 1000, 1200, 1300, 1400],
          //     },
          //     {
          //       name: '产品规模',
          //       data: [1800, 1500, 1900, 1600, 1600, 2000, 2600, 1000],
          //     },
          //   ],
          // });
          message.error(response?.msg || '产品数量和规模走势图信息失败！');
        }
      } catch (e) {
        console.log(e);
      }
    },
    // 获取产品数量和规模走势图的右侧table
    *getResultList({ payload, callback }, { call }) {
      try {
        const response = yield call(api.organProductAnalysisApi.getResultList, payload);
        if (response && response.code == 0) {
          callback(response.data || []);
        } else {
          callback([]);
          // callback([
          //   {
          //     id: 1,
          //     tenantName: 'xxx',
          //     productNum: 1,
          //     productScale: 2,
          //     rank: 2233,
          //   },
          //   {
          //     id: 2,
          //     tenantName: 'vvvv',
          //     productNum: 1,
          //     productScale: 23,
          //     rank: 4444,
          //   },
          // ]);
          message.error(response?.msg || '获取结果列表失败！');
        }
      } catch (e) {
        console.log(e);
      }
    },
    // 获取 机构总览 left
    *getInstitutionOverviewLeftInfo({ payload, callback }, { call }) {
      try {
        const response = yield call(api.organProductAnalysisApi.getInstitutionOverviewLeft, payload);
        if (response && response.code == 0) {
          callback(response.data || []);
        } else {
          callback([]);
          // callback([{
          //   province: '江苏',
          //   totalOrgan: 30,
          //   totalProduct: 7777,
          //   totalScale: 8888,
          // },
          // {
          //   province: '内蒙古',
          //   totalOrgan: 40,
          //   totalProduct: 333,
          //   totalScale: 44444,
          // },
          // {
          //   province: '四川',
          //   totalOrgan: 20,
          //   totalProduct: 200,
          //   totalScale: 499,
          // },
          // {
          //   province: '北京',
          //   totalOrgan: 10,
          //   totalProduct: 3999,
          //   totalScale: 1003,
          // },
          // {
          //   province: '上海',
          //   totalOrgan: 8,
          //   totalProduct: 666,
          //   totalScale: 9993,
          // },
          // {
          //   province: '重庆',
          //   totalOrgan: 10,
          //   totalProduct: 3333,
          //   totalScale: 555,
          // },
          // ]);
          message.error(response?.msg || '获取机构总览列表失败！');
        }
      } catch (e) {
        console.log(e);
      }
    },
    // 获取  年度对比 月 / 日数据
    *getMonthAndDayCharts({ payload, callback }, { call }) {
      try {
        const response = yield call(api.organProductAnalysisApi.getMonthAndDayData, payload);
        if (response && response.code == 0) {
          callback(response.data || []);
        } else {
          callback([]);
          // if (payload.type === 'month') {
          //   callback({
          //     xAxis: ['03', '04', '05', '06', '07', '08', '09',
          //       '10', '11', '12', '01', '02', '03', '04'],
          //     series: [
          //       {
          //         name: `${payload.startYear}年`,
          //         data: [
          //           20, 30, 40, 50, 40, 23, 15,
          //           20, 30, 40, 50, 40, 23, 15,
          //         ],
          //       },
          //       {
          //         name: `${payload.endYear}年`,
          //         data: [
          //           20, 20, 30, 60, 30, 23, 30,
          //           20, 20, 30, 60, 30, 23, 30,
          //         ],
          //       },
          //       {
          //         name: `${payload.startYear}年`,
          //         data: [
          //           1, 10, 10, -10, 10, 2, 15,
          //           1, 10, 10, -10, 10, 2, 15,
          //         ],
          //       },
          //       {
          //         name: `${payload.endYear}年`,
          //         data: [
          //           0, 20, 50, 60, 30, 23, 10,
          //           30, 20, 60, 60, 30, 23, 10,
          //         ],
          //       },
          //     ],
          //   });
          // } else if (payload.type === 'day') {
          //   callback({
          //     xAxis: ['03-29', '03-30', '03-31', '04-01', '04-04', '04-05', '04-06',
          //       '04-07', '04-08', '04-11', '04-12', '04-13', '04-14', '04-15'],
          //     series: [
          //       {
          //         name: `${payload.startYear}年`,
          //         data: [
          //           20, 30, 40, 50, 40, 23, 15,
          //           20, 30, 40, 50, 40, 23, 15,
          //         ],
          //       },
          //       {
          //         name: `${payload.endYear}年`,
          //         data: [
          //           20, 20, 30, 60, 30, 23, 30,
          //           20, 20, 30, 60, 30, 23, 30,
          //         ],
          //       },
          //       {
          //         name: `${payload.startYear}年`,
          //         data: [
          //           0, 10, 10, -10, 10, 0, -15,
          //           0, 10, 10, -10, 10, 0, -15,
          //         ],
          //       },
          //       {
          //         name: `${payload.endYear}年`,
          //         data: [
          //           0, 20, 50, 60, 30, 23, 10,
          //           30, 20, 60, 60, 30, 23, 10,
          //         ],
          //       },
          //     ],
          //   });
          // }
          message.error(response?.msg || '获取机构总览列表失败！');
        }
      } catch (e) {
        console.log(e);
      }
    },
    // 获取 机构总览 right
    *getInstitutionOverviewRightInfo({ payload, callback }, { call }) {
      try {
        const response = yield call(api.organProductAnalysisApi.getInstitutionOverviewRight, payload);
        if (response && response.code == 0) {
          callback(response.data || []);
        } else {
          callback([]);
          // callback([{
          //   institutionName: '机构名称',
          //   productScale: 1000,
          //   productNum: 500, // 机构产品数量
          // }, {
          //   institutionName: 'xxxxx',
          //   productScale: 2000,
          //   productNum: 199, // 机构产品数量
          // },
          // ]);
          message.error(response?.msg || '获取机构总览列表失败！');
        }
      } catch (e) {
        console.log(e);
      }
    },
  },

  reducers: {
    setState(state, { payload }) {
      return {
        ...state,
        ...payload,
      };
    },
  },
};
